<template>
  <div>

  </div>
</template>
<script setup lang="ts">
//特殊类型  any没有做任何类型的限制  顶级类型
// let d:any; //等价于 let d
// d = '1';
// d = 2;
// d = true;
// d = [1, 2, 3];
// d = {}
// console.log(d)


//unknown   范围的缩小  unknown赋值给到string 就是错误的  不常用

// let u:unknown;
// let a: any;
//
// // u = 1;
// u = '2'
// // u = {a:1,b:2}
// // u = true
// // let val:any = u;
//
// let c:string = u
//
// // console.log(u,a,val)
// console.log(u,a,c)


//void
// const setInfo = ():void => {} // 等价于 const setInfo = () => {}
// const setInfo1 = ():void => { return '1' }  // error
// const setInfo2 = ():void => { return 2 } // error
// const setInfo3 = ():void => { return true } // error
// const setInfo4 = ():void => { return  } // ok
// const setInfo5 = ():void => { return undefined } //ok
//
// const setInfo6 = ():void => { return  null} // ok
// setInfo()
// setInfo1()
// setInfo2()
// setInfo3()
// setInfo4()
// setInfo5()
// setInfo6()


//never  不常用
// let error = ():never => { // 等价约 let error = () => {}
//   throw new Error("error");
// };
//
// let error1 = ():never => {
//   while(true){}
// }


//Enum(枚举)
// 数字枚举
// 在TypeScript（TS）中，数字枚举（Numeric Enumeration）是一种特殊的枚举类型，
// 其中每个枚举成员都被赋予了一个整数值。
// 这些值默认是从0开始递增的，但你也可以显式地为某些或所有成员指定值。
// enum numberColor {
//  A,
//  B,
//  C
// }
// console.log(numberColor.A);
// console.log(numberColor.B);
// console.log(numberColor.C);


// enum numberColor {
//  A=7,
//  B=0,
//  C=4
// }
// console.log(numberColor);



//字符串枚举 必须有默认值
// enum stringColor {
//   A = 'A1',
//   B = 'B1',
//   C = 'C1'
// }
//
// console.log(stringColor.A)


//常量枚举   不常见
// const enum constantColor{
//   A = 'A1',
//   B = 7,
//   C = 'C1'
// }
//
// console.log(constantColor.A)


//异构枚举
// enum constantColor{
//   A = 'A1',
//   B = 7,
//   C = 'C1'
// }
//
// console.log(constantColor.A)

//枚举的反向映射   不常见
enum Color {
  Red,
  Green,
  Blue
}

// console.log(Color.Red) //0
// console.log(Color.Green) //1
// console.log(Color.Blue) //2
// console.log(Color[0]);  //Red
// console.log(Color[1]);  //Green
// console.log(Color[2]);  //Blue

//其他类型
// let str:'小杜杜'
// let num: 1 | 2 | 3 = 1
// let flag:true
//
// str = '小杜杜' //ok
// str = 'Donmesy' // error
//
// num = 2 //ok
// num = 7 // error
//
// flag = true // ok
// flag = false // error


//交叉类型

// const Info:{a:string}&{b:number} = {
//   a: '小杜杜',
//   b: 7
// }
// console.log(Info)
</script>

<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
  transition: filter 300ms;
}

.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}

.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>
